﻿# -*- coding: utf-8 -*-

# 创建文件读取函数
def du_qu():
    xing_ming = input('请输入玩家姓名。\n')
    # 读取文件（读取后是字符串格式）
    with open('game_one_user.txt', encoding='utf8') as f:
        l1 = f.readlines()
    # 把字符串变成列表存入字典
    di = {}
    for i in l1:
        x = i.split()
        di[x[0]] = x[1:]
    # 查找玩家存不存在
    cha_zhao = di.get(xing_ming)
    if cha_zhao == None:
        print('您是新玩家！')
        lst = [0, 0, 100]
        ci_shu, lun_shu, zui_xiao = lst[0], lst[1], lst[2]
    else:
        lst = list(map(int, cha_zhao))
        ci_shu, lun_shu, zui_xiao = lst[0], lst[1], lst[2]
        print(f'你一共玩了{ci_shu}次，最少{zui_xiao}轮猜出答案，平均{(lun_shu / ci_shu):.2f}轮猜出答案。')
    lst[0], lst[1], lst[2] = ci_shu, lun_shu, zui_xiao
    return di, lst, xing_ming

# 创建比较函数
def bi_jiao(com1):
    # global x      # 全局后调用时不需要在重新赋值
    x = 0
    while True:
        x += 1
        ans = int(input('请猜一个1到100的数字。\n'))
        if ans < com1:
            print('你猜的数字小了！')
        elif ans > com1:
            print('你猜的数字大了！')
        else:
            print(f'恭喜您猜对啦！！！')
            break
    return x

# 创建主函数
def you_xi(lst):
    # 调用模块
    import requests
    ci_shu, lun_shu, zui_xiao = lst[0], lst[1], lst[2]
    while True:
        # 从网络获取数据
        com = requests.get('https://python666.cn/cls/number/guess/')
        com1 = int(com.text)
        x = bi_jiao(com1)
        # 游戏次数加1, 总轮数加上本次轮数
        ci_shu += 1
        lun_shu += x
        # 对比最小轮数
        if zui_xiao > x:
            zui_xiao = x
        print(f'你一共玩了{ci_shu}次，最少{zui_xiao}轮猜出答案，平均{(lun_shu / ci_shu):.2f}轮猜出答案。')
        ans = input('输入y继续游戏，其它退出。\n')
        if ans != 'y':
            break
    lst[0], lst[1], lst[2] = ci_shu, lun_shu, zui_xiao
    return lst

# 创建文件写入函数
def xie_ru(di, xing_ming, lst):
    # 将数据写入字典
    di[xing_ming] = lst

    # 写入文件，为方便写入多个数据，用列表来存储数据
    # 先把字典转换成列表，列表里必须都是字符才行
    l = []
    for i in di:
        l.append(i)
        for j in di[i]:
            # 转换成字符并加入空格
            l.append(f' {str(j)}')
        l.append('\n')
    # 写入文件
    with open('game_one_user.txt', 'w', encoding='utf8') as f:
        f.writelines(l)

def quan():
    # 读取文件
    di, lst, xing_ming = du_qu()

    # 开始游戏
    lst = you_xi(lst)

    # 写入文件
    xie_ru(di, xing_ming, lst)

quan()